﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using BLL.Validation;
using Utilities;
using Entities;

namespace BLL
{
    public class HocVienManager : IValidator<HocVien>
    {

        public static ActionResultAsList<HocVien > LayDanhSachHocVien()
        {
            var aResult = new ActionResultAsList<HocVien>();
            try
            {
                aResult.Result = HocVienProvider.LayDanhSachHocVien();
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResultAsList<HocVien> TimDanhSachHocVien(object objA, SoSanh ss)
        {
            var aResult = new ActionResultAsList<HocVien>();
            try
            {
                aResult.Result = HocVienProvider.TimDanhSachHocVien(objA, ss);
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<bool> XoaHocVien(int maHV)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = HocVienProvider.XoaHocVien(maHV);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Xóa thông tin học viên không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }
        public static ActionResult<bool> CapNhatHocVien(HocVien hv)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = HocVienProvider.CapNhatHocVien(hv);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Cập nhật học viên không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<int> ThemHocVien(HocVien hv)
        {
            var aResult = new ActionResult<int>();
            try
            {
                aResult.Result = HocVienProvider.ThemHocVien(hv);
                if (aResult.Result <= 0)
                {
                    aResult.Exceptions.Add(new Exception("Thêm mới học viên không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public ValidationResult Validate(HocVien obj)
        {
            var vResult = new ValidationResult();
            if (string.IsNullOrEmpty(obj.HoTen.Trim()))
            {
                vResult.Message.Add("Tên học viên phải khác chuỗi rỗng");
            }
            if (string.IsNullOrEmpty(obj.DiaChi.Trim()))
            {
                vResult.Message.Add("Địa chỉ học viên phải khác chuỗi rỗng");
            }
           
            if (!string.IsNullOrEmpty(obj.Email.Trim()))
            {
                if (!StringExtensions.IsEmailAddress(obj.Email))
                {
                    vResult.Message.Add("Địa chỉ email không hợp lệ");
                }
            }
            else
            {
                vResult.Message.Add("Địa chỉ email phải khác chuỗi rỗng");
            }

            if (!string.IsNullOrEmpty(obj.SoDT.Trim()))
            {
                if (!StringExtensions.IsPhoneNumber(obj.SoDT))
                {
                    vResult.Message.Add("Số điện thoại không hợp lệ");
                }
            }
            else
            {
                vResult.Message.Add("Số điện thoại phải khác chuỗi rỗng");
            }
            return vResult;
        }
    }
}
